//导入express
const express=require("express")

//创建服务器实例
const app=express()

//导入cors解决跨域
const cors=require("cors")
app.use(cors())

//注册解析字符串
app.use(express.json())

//导入jsonwebtoken与express-jwt
const jsonwebtoken=require("jsonwebtoken")
const {expressjwt}=require("express-jwt")

//定义密钥
const secretkey='itheima no1'

//解析token字符串
app.use(expressjwt({secret:secretkey,algorithms:["HS256"]}).unless({path:[/^\/api\//]}))


//登录接口
app.post("/api/login",(req,res)=>{
    //省略登陆失败的代码
    console.log("登录")
    const userInfo=req.body

    //用户登录成功后，将生成jsonwebtoken
    res.send({
        status:200,
        msg:"登录成功",
        //生成token字符串
        token:jsonwebtoken.sign({username:userInfo.username},secretkey,{expiresIn:'200s'})
    })
})

//有权限的接口
//当express-jwt配置成功后就可以使用req.user访问token解密后的对象信息
app.get("/admin/user",(req,res)=>{
    res.send({
        status:0,
        message:"响应成功",
        data:req.auth
    })
})

//注册错误处理中间件
app.use((err,req,res,next)=>{
    //Token原因导致的失败
    if(err.name='unauthorizedError'){
        return res.send({status:401,message:"无效的token"})
    }else{
        //其他错误
        return res.send({status:500,message:"未知的错误"})
    }
})


//开启服务器
app.listen(80,()=>{
    console.log("runing at server 127.0.0.1")
})